#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <fcntl.h>
#include <sys/stat.h>

#define filename "log.txt"

int main() {
    fprintf(stdout, "helle stdin\n");
    fprintf(stdout, "helle stdin\n");
    fprintf(stdout, "helle stdin\n");
    fprintf(stdout, "helle stdin\n");
    fprintf(stdout, "helle stdin\n");

    fprintf(stderr, "helle stderr\n");
    fprintf(stderr, "helle stderr\n");
    fprintf(stderr, "helle stderr\n");
    fprintf(stderr, "helle stderr\n");
    fprintf(stderr, "helle stderr\n");
    //int fd = open(filename, O_RDONLY);
    //if(fd == -1) {
    //    return errno;
    //}
    ////键盘文件对应的描述符为0
    //dup2(fd, 0);
    //char inbuff[1024];
    //ssize_t s = read(0, inbuff, sizeof(inbuff) - 1);
    //if(s) {
    //    inbuff[s] = 0;
    //}
    //printf(inbuff);
    //close(fd);
   // int fd = open(filename, O_CREAT | O_WRONLY | O_TRUNC, 0666);
   // if(fd == -1) {
   //     return errno;
   // }
   // dup2(fd, 1);
   // const char* msg = "hello linux\n";
   // write(1, msg, strlen(msg));
   // close(fd);
   // printf("stdinfd = %d\n", stdin->_fileno);
   // printf("stdoutfd = %d\n", stdout->_fileno);
   // printf("stderrfd = %d\n", stderr->_fileno);
   //`` const char* msg1 = "hello stdout\n";
   //`` write(1, msg1, strlen(msg1));
   //`` const char* msg2 = "hello stderr\n";
   //`` write(2, msg2, strlen(msg2));
    //char buff[1024];
    ////stdin，键盘文件
    ////从键盘读取
    //ssize_t s = read(0, buff, sizeof(buff));
    //if(s == -1) return 1;
    //buff[s] = 0;
    //printf("echo: %s", buff);
    return 0;
}

//int main() {
//    int fd1 = open("log1.txt", O_WRONLY | O_CREAT | O_TRUNC, 0666);
//    int fd2 = open("log2.txt", O_WRONLY | O_CREAT | O_TRUNC, 0666);
//    int fd3 = open("log3.txt", O_WRONLY | O_CREAT | O_TRUNC, 0666);
//    int fd4 = open("log4.txt", O_WRONLY | O_CREAT | O_TRUNC, 0666);
//    
//    printf("fd1 = %d\n", fd1);
//    printf("fd2 = %d\n", fd2);
//    printf("fd3 = %d\n", fd3);
//    printf("fd4 = %d\n", fd4);
//   // if(fd == -1) {
//   //     perror("open file err: ");
//   //     exit(errno);
//   // }
//    return 0;
//}
//int main() {
//    FILE* fp = fopen("log.txt", "w");
//    if(fp == NULL) {
//        perror("fopen err: ");
//        return errno;
//    }
//    const char* message = "hello linux";
//    fwrite(message, strlen(message), 1, fp);
//    fclose(fp);
//    return 0;
//}
//int main(int argc, char* argv[]) {
//    pid_t id = fork();
//    if(id == 0) {
//        printf("i am child process\n");
//        sleep(5);
//    }
//    else {
//        int status = 0;
//        pid_t wid = wait(&status);
//        if(wid == id) {
//            printf("等待成功，退出码为%d\n", WEXITSTATUS(status));
//        }
//    }
//    return 0;
//}
